
from collections import defaultdict
import json
from functools import partial
import numpy as np
from sklearn.cluster import HDBSCAN,DBSCAN,OPTICS,KMeans
from sent2vec import Sent2VecEmbeddings

model=Sent2VecEmbeddings('/data/lxy/thenlper/gte-large-zh')

document=['信网办的主任是谁？', '东北大学信网办主任是谁', '信网办全称是什么?', '介绍一下信网办', '我正在办理东北大学的网络接入申请，请问这个业务的负责部门是哪个？', '智慧实验室办公室的主任是谁？', '信网办的全称是什么', '信网办负责推动什么样的工作，并落实什么委员会或小组的决定？', '信网办的总工程师是谁？']

doc,maxNorm=model.embed_documents(document)
doc/=maxNorm
doc_embedding=np.array(doc)

# print(doc_embedding,doc_embedding.shape)
# k = 5  # 替换为你选择的簇数
# HDBSCAN = HDBSCAN(cluster_selection_epsilon=0.5,min_samples=1)
# label=HDBSCAN.fit_predict(doc_embedding)
dbscan = KMeans(3)
dbscan.fit(doc_embedding)
cluster_labels = dbscan.labels_  # 每个数据点的簇标签
print(cluster_labels)

# cluster_labels = HDBSCAN.labels_  # 每个数据点的簇标签
# print(cluster_labels,len(cluster_labels))
cluster_dict=defaultdict(list)

for i in range(len(cluster_labels)):
    cluster_dict[cluster_labels[i]].append(document[i])

for k,v in cluster_dict.items():
    print(v[0])

# cluster_list=list(cluster_dict.values())


